Skip to main content

機能ブロックの拡張

全般的

関数ブロックの拡張は、オブジェクト指向プログラミングにおける継承の概念に基づいています。この目的のために、派生関数ブロックは基本関数ブロックを「拡張」し、それ自体のプロパティに加えて基本関数ブロックのプロパティを受け取ります。

機能ブロックの拡張とは、次のことを意味します。

  • 派生関数ブロックには、基本関数ブロックによって定義されたすべてのデータとメソッドが含まれています。基本機能ブロックのインスタンスは、次のようなコンテキストで使用できます。 CODESYS 基本機能ブロックタイプの機能ブロックが必要です。

  • 派生汎用モジュールは、基本汎用モジュールで定義したメソッドを上書きすることができます。つまり、派生関数ブロックは、基本関数ブロックで定義されているのと同じ名前、入力、および出力でメソッドを定義できます。

    ヒント:基本ブロックから継承されたメソッド、アクション、プロパティ、および遷移のこの上書きに対して、次のサポートが提供されます。派生したビルディングブロックの下にメソッドやアクションなどを挿入すると、ダイアログが表示されます オブジェクトを追加 基本モジュールで使用されるメソッド、アクションなどを選択したコンボボックスであり、それらを受け入れることができますが、それに応じてそれらを適応させる必要があります。

  • 派生関数ブロックには、基本関数ブロックが使用するのと同じ名前の関数ブロック変数を含めることはできません。コンパイラはこれをエラーとして報告します。

    唯一の例外:基本機能ブロックで変数を次のように使用する場合 VAR_TEMP 宣言された場合、派生関数ブロックは同じ名前の変数を定義できます。この場合、派生機能ブロックは基本機能ブロックの変数にアクセスできなくなります。

  • 派生関数ブロックのスコープ内で基本関数ブロックの変数とメソッドを使用するには、 SUPER-ポインタを直接アドレス指定します。

重要

多重継承は許可されていません。

例外:機能ブロックは複数のインターフェースを実装でき、インターフェースは他のインターフェースを拡張できます。

新しい機能ブロックによる基本機能ブロックの拡張

要件:現在開いているプロジェクトには、たとえば基本的な機能ブロックがあります POU_1(FB)、これは新しい汎用モジュールによって拡張されます。

  1. オブジェクトを選択します 応用 デバイスツリーで、メニューコマンドを選択します プロジェクト→オブジェクトの追加→POU

    対話 POUを追加する 開きます。

  2. 入力項目に新しい汎用モジュールの名称を入力します たとえば、 POU_Ex

  3. 選ぶ 汎用モジュール

  4. 選ぶ 高度 ボタンをクリックします _cds_icon_input_assistent.png

  5. エントリヘルパーで、カテゴリから選択します ファンクションブロック応用 たとえば、基本機能ブロックとして機能するPOU(FB) POU_1 をクリックします わかった

  6. オプションであなたは1つを持つことができます アクセス修飾子 コンボボックスからの新しい機能ブロック用。

  7. コンボボックスから選択 実装言語 例えば 構造化テキスト(ST) アウト。

  8. クリック 追加

    CODESYS 機能ブロックを追加します POU_Ex デバイスツリーに移動すると、エディターが開きます。最初の行は次のように述べています。

    FUNCTION_BLOCK POU_Ex EXTENDS POU_1

    機能ブロック POU_Ex 基本機能ブロックを拡張します POU_1

基本機能ブロックを既存の機能ブロックで拡張する

要件:現在開いているプロジェクトには、たとえば基本的な機能ブロックがあります POU_1(FB)、および別の機能ブロック、たとえば POU_Ex(FB)。機能ブロック POU_Ex(FB) 基本機能ブロックのプロパティも必要です。つまり、次のことを意味します。 POU_Ex(FB) 目標 POU_1(FB) 拡大。

  1. デバイスツリーの機能ブロックをダブルクリックします POU_Ex(FB)

    機能ブロックのエディタが開きます。

  2. 既存の一番上の行のエントリを展開します FUNCTION_BLOCK POU_ExEXTENDS POU_1

    機能ブロックPOU_Exは、基本機能ブロックを拡張します POU_1

詳細については、以下を参照してください。 インターフェイスを実装するインターフェイスを拡張する

継承POUを生成する際の入力サポート

オブジェクト指向プログラミングを行い、継承を使用する場合(EXTENDS キーワード)POUの場合、次のようにサポートを受けることができます。

ベースPOUから派生したPOUの下にアクション、プロパティ、メソッド、またはトランジションを挿入すると、 追加 … ダイアログが開きます。次に、名前の入力フィールドがリストボックスに拡張されます。リストボックスには、ベースPOUで使用可能なアクション、プロパティ、メソッド、またはトランジションからの有効な選択が含まれています。これで、たとえば、ベースPOUのメソッドを簡単に受け入れて、それをPOUの派生関数に適合させることができます。

アクセス修飾子を使用したメソッドとプロパティ PRIVATE それらも継承されないため、ここにはリストされていません。アクセス修飾子を使用したメソッドとプロパティ PUBLIC 派生したPOUに受け入れると、自動的に空白のアクセス修飾子フィールドを取得します。これは、機能的には同じことを意味します。

詳細については、以下を参照してください。 財産方法遷移アクション

29.
_cds_img_input_wizzard_for_blocks.png